﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sinacor.Process.Bovespa.Negocio.ProcessEntity
{
    [Serializable]
    public abstract class NegocioDetail
    {
        #region Atributos

        private string _tipoRegistro;
        private int _numeroNegociosPorCodigoNegociacao;
        private Enum.NaturezaOperacao _naturezaOperacao;
        private string _codigoNegociacao;
        private Enum.TipoMercado _tipoMercado;
        private Enum.TipoTransacao _tipoTransacao;
        private string _nomeSociedadeEmissora;
        private string _especificacao;
        private long _quantidadeNegocio;
        private decimal _precoNegocio;
        private int _codigoUsuarioContraParte;
        private string _prazoVencimentoAntigo;
        private string _tipoLiquidacao;
        private string _horaMinutoNegocio;
        private string _situacaoNegocio;
        private string _codigoObjetoPapel;
        private int _codigoCliente;
        private int _digitoCliente;
        private string _codigoISIN;
        private int _distribuicaoISIN;
        private string _fatorCotacaoNegocio;
        private decimal _precoExercicioSerie;
        private string _indicadorAfterMarketing;
        private string _indicadorAfterMarketingXML;
        private string _dataPregao;

        #endregion

        #region Construtor

        public NegocioDetail()
        {
        }

        #endregion

        #region Propriedades

        public string TipoRegistro
        {
            get { return _tipoRegistro; }
            set { _tipoRegistro = value; }
        }

        public int NumeroNegociosPorCodigoNegociacao
        {
            get { return _numeroNegociosPorCodigoNegociacao; }
            set { _numeroNegociosPorCodigoNegociacao = value; }
        }

        public Enum.NaturezaOperacao NaturezaOperacao
        {
            get { return _naturezaOperacao; }
            set { _naturezaOperacao = value; }
        }

        public string CodigoNegociacao
        {
            get { return _codigoNegociacao; }
            set { _codigoNegociacao = value; }
        }

        public Enum.TipoMercado TipoMercado
        {
            get { return _tipoMercado; }
            set { _tipoMercado = value; }
        }

        public Enum.TipoTransacao TipoTransacao
        {
            get { return _tipoTransacao; }
            set { _tipoTransacao = value; }
        }

        public string NomeSociedadeEmissora
        {
            get { return _nomeSociedadeEmissora; }
            set { _nomeSociedadeEmissora = value; }
        }

        public string Especificacao
        {
            get { return _especificacao; }
            set { _especificacao = value; }
        }

        public long QuantidadeNegocio
        {
            get { return _quantidadeNegocio; }
            set { _quantidadeNegocio = value; }
        }

        public decimal PrecoNegocio
        {
            get { return _precoNegocio; }
            set { _precoNegocio = value; }
        }

        public int CodigoUsuarioContraParte
        {
            get { return _codigoUsuarioContraParte; }
            set { _codigoUsuarioContraParte = value; }
        }

        public string PrazoVencimentoAntigo
        {
            get { return _prazoVencimentoAntigo; }
            set { _prazoVencimentoAntigo = value; }
        }

        public string TipoLiquidacao
        {
            get { return _tipoLiquidacao; }
            set { _tipoLiquidacao = value; }
        }

        public string HoraMinutoNegocio
        {
            get { return _horaMinutoNegocio; }
            set { _horaMinutoNegocio = value; }
        }

        public string SituacaoNegocio
        {
            get { return _situacaoNegocio; }
            set { _situacaoNegocio = value; }
        }

        public string CodigoObjetoPapel
        {
            get { return _codigoObjetoPapel; }
            set { _codigoObjetoPapel = value; }
        }

        public int CodigoCliente
        {
            get { return _codigoCliente; }
            set { _codigoCliente = value; }
        }

        public int DigitoCliente
        {
            get { return _digitoCliente; }
            set { _digitoCliente = value; }
        }

        public string CodigoISIN
        {
            get { return _codigoISIN; }
            set { _codigoISIN = value; }
        }

        public int DistribuicaoISIN
        {
            get { return _distribuicaoISIN; }
            set { _distribuicaoISIN = value; }
        }

        public string FatorCotacaoNegocio
        {
            get { return _fatorCotacaoNegocio; }
            set { _fatorCotacaoNegocio = value; }
        }

        public decimal PrecoExercicioSerie
        {
            get { return _precoExercicioSerie; }
            set { _precoExercicioSerie = value; }
        }

        public string IndicadorAfterMarketing
        {
            get { return _indicadorAfterMarketing; }
            set { _indicadorAfterMarketing = value; }
        }

        public string IndicadorAfterMarketingXML
        {
            get { return _indicadorAfterMarketingXML; }
            set { _indicadorAfterMarketingXML = value; }
        }

        public string DataPregao
        {
            get { return _dataPregao; }
            set { _dataPregao = value; }
        }

        #endregion

        #region Propriedades Virtual

        public virtual Enum.TipoBolsaMovimento BolsaMovimento
        {
            get { return ProcessEntity.Enum.TipoBolsaMovimento.Bovespa; }
            set { }
        }

        #endregion

        #region Propriedades Abstratas

        public abstract string PrazoVencimentoNovo { get; set; }
        public abstract int BolsaNegocio { get; set; }
        public abstract Enum.FormaLiquidacao FormaLiquidacao { get; set; }
        public abstract int PrazoLiquidacao { get; set; }

        #endregion
    }
}
